package com.job.shuang.HomeWork0711.ToStringAndEquals;

/**
 * @author Liushuang
 * @version 1.0
 * @since 2022-07-11 21:13:23
 */
public class TestCup {
    public static void main(String[] args) {
        Cup cup=new Cup("Triipper", 49D, 380D, "黄色");
        System.out.println(cup);
        //一般的toString方法应该重写为简明易懂的描述对象特征的字符串

        Cup cup2=new Cup("Tripper", 49D, 380D, "黄色");

        System.out.println(cup==cup2);//比较地址
        System.out.println(cup.equals(cup2));//原始的：比较地址
        //一般的equals重写为比较对象间的所有特征
        //哈希协定：两个对象equals方法结果为true 代表两个都相等
        // 相等的两个对象的hashcode值也得相等

        //原本：hashcode()和equals()都是参照对象地址
        //一并重写为参照对象特征来计算

        //四类八种包装类和String都已经重写了 equals和hashcode

        /*
        == 和equals的区别
        1:== 是比较运算符
           比较基本类型，比较数据
           比较引用类型，比较地址
        2:equals是Object类的方法，任何类都可以重写此方法
           如果不重写，比较地址
           如果重写，一般是比较对象的所有特征，也可以按需重写
           按照哈希协定，重写equals也要重写hashcode方法.
         */
    }
}
